\documentclass{ctexart}
\usepackage{listings}%插入代码
\usepackage{geometry}%设置页面大小边距等
\usepackage{authblk}%作者机构等信息
\usepackage{graphicx}%插入图片
\usepackage{url}%Bib中引用网页
\usepackage{amssymb}%为了用\mathbb
\usepackage{amsmath}%数学方程的显示
\usepackage{amsthm}%数学定理
\usepackage{listings}%插入代码
\newtheorem{theorem}{Theorem}
\newtheorem{Proof}{proof}
\geometry{a4paper,left=2cm,right=2cm,top=2cm,bottom=2cm}
\title{Mandelbrot Set 的生成和探索}
\author[1]{陈冠宇\ 3200102033}
\affil[1]{浙江大学数学科学学院}
\date{\today}

\begin{document}

\maketitle

\section*{摘要}
  本文旨在介绍Mandelbrot Set。分别会从Mandelbrot Set背景, 数学理论, 算法方面研究,并且会给出具体的数值算例,最后得出 结论。

\noindent{\textbf{关键词：}Mandelbrot Set}

\setcounter{tocdepth}{4} %设定目录深度为i，只显示到i级标题为
\tableofcontents %列出目录

\newpage

\section{引言}
Mandelbrot Set 被称为“魔鬼的聚合物”,“上帝的指纹”.

Bernoit Mandelbrot是其发现者，他毕生致力于分形的研究，以及自相似性数学。他的工作在物理学、气象学、神经学、经济学、地质学、工程学、计算机科学和许多其他领域都有广泛应用。

1985年，Mandelbrot集出现在《科学美国人》杂志的封面上。从那时起，它已成为世界上最知名的数学形状之一。你可以在T恤衫、音乐视频和屏幕保护程序中找到它，许多流行书籍和电影中都提到过它。\cite{Mathigon}

下面来看看Mandelbrot Set是什么样！

\centerline{\includegraphics[scale=0.5]{../figures/MSet.jpg}}
\section{问题的背景介绍}

根据公式$$Z_{n+1} =Z_n^2+C$$对于每一个$C\in \mathbb{C}$，从$Z_0=0+0i$开始计算，如果 $Zn$收敛，则C在集合中,否则$c\in {\emph{Mandelbrot}}$。对于所有C组成的集合，称为\emph{Mandelbrot Set}.\cite{mathworld}

\section{数学理论}
\subsection{逃逸准则}
\begin{theorem}
  对于$z_n=x_n+iy_n\in \mathbb{C},|z_n|=\sqrt{x_n^2+y_n^2}$,若对于一个复数序列$\{z_1,z_2,\cdots,z_n\}，|z_i|>max{\{2,|c|\}}$,则序列将逃逸到无穷大。\cite{OrangeKiller}
\end{theorem}
\begin{proof}
  当 $ \left|z_{j}\right|>\max (2,|c|) $，则

 1. 由  $\left|z_{j}\right|>2$ 可知
 \begin{equation}
   \begin{split}
        & \left|z_{j}\right|=2+\epsilon \\
       &|z_{j}^{2}|=\left|z_{j}^{2}+c-c\right|\geq\left|z_{j}^{2}+c\right|+|c|
   \end{split}
 \end{equation}
 因此，我们得到
 \begin{equation}
   |z_{j+1}|=|z_{j}^{2}+c| \geq |z_{J}^{2}|-|c|=|z_{j} |^{2}-|c| > |z_{J}|^{2} - |z_{j}| > |z_{j}|(|z_{j}|-1) > |z_{j}|(1+\epsilon)
 \end{equation}

 那么在k次迭代后，我们得到$|z_{j+k}^{2}+c| > |z_{j}|(1+e)^{k}$\\
 $\Rightarrow$序列趋于无穷

 2. 如果 $ |c| \geq 2$,可得$z_{0}=0, z_{1}=c, \quad z_{2}=c \times(c+1)$\\
 由$|c+1|>1,\left|c^{2}+c\right|>|c|$
 $\Rightarrow \frac{|z_2|}{|z_1|}=\frac{|c^{2}+c|}{|c|}>1$

 则对于任意$z_{j}$，设$|z_{j}|=p>1$，我们有  $\frac{|z_{j+1}|}{|z_{j}|} >\epsilon$，对于 $\epsilon >1$

 归纳得序列趋于无穷。
\end{proof}
\section{算法 }
\subsection{Window.h}
在Window.h中我们定义了Window类，要求用户输入原点坐标信息和范围。E.g.$dimension=5$代表图片最右边代表坐标$(5,0)$,最左边代表 $(-5,0)$.

\begin{lstlisting}[frame=single,basicstyle=\ttfamily,columns=flexible]
var height,width:           int     %高宽
var _ox,_oy,dimension:      double  %原点横纵坐标，页面范围
lpp <- dimension*2/width;
\end{lstlisting}
\subsection{Mandelbrot.h}

\subsubsection{定义\emph{Iteration}类}
\begin{lstlisting}[frame=single,basicstyle=\ttfamily,columns=flexible]
get_iteration_point();  %返回迭代点 iteration_point
get_iteration_times();  %返回迭代次数 iteration_times
\end{lstlisting}

\subsubsection{定义\emph{Mandelbrot}类}
\begin{lstlisting}[frame=single,basicstyle=\ttfamily,columns=flexible]
forward_step();             %继续迭代
stop_criterion();           %迭代停止，返回flag_stop = true
is_disconvergence();        %判断不收敛，返回flag_disconvergence = true
\end{lstlisting}

\subsection{主函数mandelbrot.cpp}
\begin{lstlisting}[frame=single,basicstyle=\ttfamily,columns=flexible]
var *cache:                     char[width*height*3]    %存放三原色信息
var pos,width,height,x,y,N:     int
%坐标处颜色信息，宽高（单位：像素）,横纵坐标,迭代最大次数
var man:                        Manderbrot
for i: = 0 to height
    for j: = 0 to width
        x <- ox + lpp * i;
        y <- oy + lpp * j;
        pos <- width*j + i;
        call man({x,y},N,{C0})；
        while flag_stop != true
            do
            call forward_step
            if flag_disconvergence = true
                then break
            end if
        end while
        if flag_stop = true
            then
                cache[pos*3] <- 255;
                cache[pos*3+1] <- 255;
                cache[pos*3+2] <- 255;
            else
                cache[pos*3] <- 0;
                cache[pos*3+1] <- 0;
                cache[pos*3+2] <- 0;
        end if
    end for
end for
call build_bmp with width, height and cache %#include "bitmap.h"
\end{lstlisting}

\section{数值算例input:0 0 3}
\subsection{固定$z_0$,考虑复平面上$C_0$}
\centerline{\includegraphics[scale=0.3]{../figures/test.bmp}}
\subsection{固定$C_0$，考虑平面上收敛$z_0$}
\begin{figure}[htbp]
  \centering
  \begin{minipage}[t]{0.4\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/(0,0).bmp}
    \caption{$C_0=(0,0)$}
  \end{minipage}
  \begin{minipage}[t]{0.4\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/(0,0.64i).bmp}
    \caption{$C_0=(0,0.64i)$}
  \end{minipage}
  \begin{minipage}[t]{0.4\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/(-0.74,0).bmp}
    \caption{$C_0=(-0.74,0)$}
  \end{minipage}
\end{figure}
\section{结论}
 当固定$x_0=(0,0)$时，$C_0$在上述区域收敛，而固定$C_0$对于不同的$C_0$有着不同的收敛区域，且区域千变万化，蕴含着无限的美。像所有分形一样，我们可以无限“放大”Mandelbrot Set，并且能够在每个尺度上发现新的模型。\cite{Mathigon}
\bibliographystyle{plain}
\bibliography{reference}
\end{document} 